package com.ourteam.product.requirement.dao;

import net.dao.BaseQueryBean;
import net.dao.BaseWhereCriterion;
import net.dao.IDataAccessInterface;

import org.apache.commons.lang.StringUtils;

import java.util.Arrays;
import java.util.List;
import java.util.Map;


/**
 * Template Name : DAO查询对象
 * Template Version : 1
 * Template Last Modfiy Date : Sat Aug 19 10:06:32 CST 2017
 * Auto Generate Date : 2018-05-03 16:45:23
  * Warning ! This file will be overwrite when regenerate !
  *
 */
public class ProductFeatureDAOQueryBean extends BaseQueryBean {
    public ProductFeatureDAOQueryBean() {
        super();
    }

    public ProductFeatureDAOQueryBean(BaseQueryBean aQueryBean) {
        super(aQueryBean);
    }

    public ProductFeatureDAOQueryBean(BaseQueryBean aQueryBean,
        Map tableReplaceMap) {
        super(aQueryBean, tableReplaceMap);
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();

        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }

        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        return new Criteria(this);
    }

    public void addIdSelectProperty() {
        addIdSelectProperty("id");
    }

    public void addIdSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductFeatureDAO.Id, aAlias);
        } else {
            addSelectProperty(IProductFeatureDAO.Id, "id");
        }
    }

    public void addFeatureCodeSelectProperty() {
        addFeatureCodeSelectProperty("featureCode");
    }

    public void addFeatureCodeSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductFeatureDAO.FeatureCode, aAlias);
        } else {
            addSelectProperty(IProductFeatureDAO.FeatureCode, "featureCode");
        }
    }

    public void addFeatureNameSelectProperty() {
        addFeatureNameSelectProperty("featureName");
    }

    public void addFeatureNameSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductFeatureDAO.FeatureName, aAlias);
        } else {
            addSelectProperty(IProductFeatureDAO.FeatureName, "featureName");
        }
    }

    public void addParentIdSelectProperty() {
        addParentIdSelectProperty("parentId");
    }

    public void addParentIdSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductFeatureDAO.ParentId, aAlias);
        } else {
            addSelectProperty(IProductFeatureDAO.ParentId, "parentId");
        }
    }

    public void addProductDefineIdSelectProperty() {
        addProductDefineIdSelectProperty("productDefineId");
    }

    public void addProductDefineIdSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductFeatureDAO.ProductDefineId, aAlias);
        } else {
            addSelectProperty(IProductFeatureDAO.ProductDefineId,
                "productDefineId");
        }
    }

    public void addRemarksSelectProperty() {
        addRemarksSelectProperty("remarks");
    }

    public void addRemarksSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductFeatureDAO.Remarks, aAlias);
        } else {
            addSelectProperty(IProductFeatureDAO.Remarks, "remarks");
        }
    }

    public void addStatusSelectProperty() {
        addStatusSelectProperty("status");
    }

    public void addStatusSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductFeatureDAO.Status, aAlias);
        } else {
            addSelectProperty(IProductFeatureDAO.Status, "status");
        }
    }

    public void addCanTestSelectProperty() {
        addCanTestSelectProperty("canTest");
    }

    public void addCanTestSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductFeatureDAO.CanTest, aAlias);
        } else {
            addSelectProperty(IProductFeatureDAO.CanTest, "canTest");
        }
    }

    public void addKeyFeatureSelectProperty() {
        addKeyFeatureSelectProperty("keyFeature");
    }

    public void addKeyFeatureSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductFeatureDAO.KeyFeature, aAlias);
        } else {
            addSelectProperty(IProductFeatureDAO.KeyFeature, "keyFeature");
        }
    }

    public void addSortIndexSelectProperty() {
        addSortIndexSelectProperty("sortIndex");
    }

    public void addSortIndexSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductFeatureDAO.SortIndex, aAlias);
        } else {
            addSelectProperty(IProductFeatureDAO.SortIndex, "sortIndex");
        }
    }

    public void addIndentSelectProperty() {
        addIndentSelectProperty("indent");
    }

    public void addIndentSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductFeatureDAO.Indent, aAlias);
        } else {
            addSelectProperty(IProductFeatureDAO.Indent, "indent");
        }
    }

    public void addAllSelectProperties() {
        addIdSelectProperty();

        addFeatureCodeSelectProperty();

        addFeatureNameSelectProperty();

        addParentIdSelectProperty();

        addProductDefineIdSelectProperty();

        addRemarksSelectProperty();

        addStatusSelectProperty();

        addCanTestSelectProperty();

        addKeyFeatureSelectProperty();

        addSortIndexSelectProperty();

        addIndentSelectProperty();
    }

    public static class Criteria extends BaseWhereCriterion<ProductFeatureDAOQueryBean> {
        protected Criteria(ProductFeatureDAOQueryBean aParentObject) {
            super(aParentObject);
        }

        public Criteria andIdIsNull() {
            addCriterion(IProductFeatureDAO.Id + " is null");

            return this;
        }

        public Criteria andIdIsNotNull() {
            addCriterion(IProductFeatureDAO.Id + " is not null");

            return this;
        }

        public Criteria andIdIsNotEmpty() {
            addCriterion(IProductFeatureDAO.Id + " is not null AND " +
                IProductFeatureDAO.Id + " <> ''");

            return this;
        }

        public Criteria andIdIsEmpty() {
            addCriterion("(" + IProductFeatureDAO.Id + " is null OR " +
                IProductFeatureDAO.Id + " = '')");

            return this;
        }

        public Criteria andIdEqualTo(long value) {
            return andIdEqualTo(Long.valueOf(value));
        }

        public Criteria andIdEqualTo(java.lang.Long value) {
            addCriterion(IProductFeatureDAO.Id + " = ", value, "id");

            return this;
        }

        public Criteria andIdEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Id);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIdEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Id + " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andIdNotEqualTo(long value) {
            return andIdNotEqualTo(Long.valueOf(value));
        }

        public Criteria andIdNotEqualTo(java.lang.Long value) {
            addCriterion(IProductFeatureDAO.Id + " <>", value, "id");

            return this;
        }

        public Criteria andIdNotEqualToOrIsNull(long value) {
            return andIdNotEqualToOrIsNull(Long.valueOf(value));
        }

        public Criteria andIdNotEqualToOrIsNull(java.lang.Long value) {
            addCriterion(IProductFeatureDAO.Id + " is null OR " +
                IProductFeatureDAO.Id + " <>", value, "id");

            return this;
        }

        public Criteria andIdNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Id);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIdNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Id + " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andIdGreaterThan(long value) {
            return andIdGreaterThan(Long.valueOf(value));
        }

        public Criteria andIdGreaterThan(java.lang.Long value) {
            addCriterion(IProductFeatureDAO.Id + " >", value, "id");

            return this;
        }

        public Criteria andIdGreaterThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Id);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIdGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Id + " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andIdGreaterThanOrEqualTo(long value) {
            return andIdGreaterThanOrEqualTo(Long.valueOf(value));
        }

        public Criteria andIdGreaterThanOrEqualTo(java.lang.Long value) {
            addCriterion(IProductFeatureDAO.Id + " >=", value, "id");

            return this;
        }

        public Criteria andIdGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Id);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIdGreaterThanOrEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Id + " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andIdLessThan(long value) {
            return andIdLessThan(Long.valueOf(value));
        }

        public Criteria andIdLessThan(java.lang.Long value) {
            addCriterion(IProductFeatureDAO.Id + " <", value, "id");

            return this;
        }

        public Criteria andIdLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Id);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIdLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Id + " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andIdLessThanOrEqualTo(long value) {
            return andIdLessThanOrEqualTo(Long.valueOf(value));
        }

        public Criteria andIdLessThanOrEqualTo(java.lang.Long value) {
            addCriterion(IProductFeatureDAO.Id + " <=", value, "id");

            return this;
        }

        public Criteria andIdLessThanOrEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Id);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIdLessThanOrEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Id + " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andIdIn(long[] values) {
            if (values.length == 1) {
                return andIdEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductFeatureDAO.Id + " in", values, "id");

                return this;
            }
        }

        public Criteria andIdNotIn(long[] values) {
            if (values.length == 1) {
                return andIdNotEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductFeatureDAO.Id + " not in", values, "id");

                return this;
            }
        }

        public Criteria andIdIn(List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andIdEqualTo(values.get(0));
            } else {
                addCriterion(IProductFeatureDAO.Id + " in", values, "id");

                return this;
            }
        }

        public Criteria andIdNotIn(List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andIdNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductFeatureDAO.Id + " not in", values, "id");

                return this;
            }
        }

        public Criteria andIdIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andIdEqualTo(values[0]);
            } else {
                addCriterion(IProductFeatureDAO.Id + " in",
                    Arrays.asList(values), "id");

                return this;
            }
        }

        public Criteria andIdNotIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andIdNotEqualTo(values[0]);
            } else {
                addCriterion(IProductFeatureDAO.Id + " not in",
                    Arrays.asList(values), "id");

                return this;
            }
        }

        public Criteria andIdIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Id + " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andIdNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Id + " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andIdBetween(long value1, long value2) {
            addCriterion(IProductFeatureDAO.Id + " between", value1, value2,
                "id");

            return this;
        }

        public Criteria andIdBetween(java.lang.Long value1,
            java.lang.Long value2) {
            addCriterion(IProductFeatureDAO.Id + " between", value1, value2,
                "id");

            return this;
        }

        public Criteria andIdNotBetween(long value1, long value2) {
            addCriterion(IProductFeatureDAO.Id + " not between", value1,
                value2, "id");

            return this;
        }

        public Criteria andIdNotBetween(java.lang.Long value1,
            java.lang.Long value2) {
            addCriterion(IProductFeatureDAO.Id + " not between", value1,
                value2, "id");

            return this;
        }

        public Criteria andFeatureCodeIsNull() {
            addCriterion(IProductFeatureDAO.FeatureCode + " is null");

            return this;
        }

        public Criteria andFeatureCodeIsNotNull() {
            addCriterion(IProductFeatureDAO.FeatureCode + " is not null");

            return this;
        }

        public Criteria andFeatureCodeIsNotEmpty() {
            addCriterion(IProductFeatureDAO.FeatureCode + " is not null AND " +
                IProductFeatureDAO.FeatureCode + " <> ''");

            return this;
        }

        public Criteria andFeatureCodeIsEmpty() {
            addCriterion("(" + IProductFeatureDAO.FeatureCode + " is null OR " +
                IProductFeatureDAO.FeatureCode + " = '')");

            return this;
        }

        public Criteria andFeatureCodeEqualTo(String value) {
            addCriterion(IProductFeatureDAO.FeatureCode + " = ", value,
                "featureCode");

            return this;
        }

        public Criteria andFeatureCodeEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.FeatureCode);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andFeatureCodeEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.FeatureCode + " = ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andFeatureCodeNotEqualTo(String value) {
            addCriterion(IProductFeatureDAO.FeatureCode + " <>", value,
                "featureCode");

            return this;
        }

        public Criteria andFeatureCodeNotEqualToOrIsNull(String value) {
            addCriterion(IProductFeatureDAO.FeatureCode + " is null OR " +
                IProductFeatureDAO.FeatureCode + " <>", value, "featureCode");

            return this;
        }

        public Criteria andFeatureCodeNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.FeatureCode);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andFeatureCodeNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.FeatureCode + " <> ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andFeatureCodeGreaterThan(String value) {
            addCriterion(IProductFeatureDAO.FeatureCode + " >", value,
                "featureCode");

            return this;
        }

        public Criteria andFeatureCodeGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.FeatureCode);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andFeatureCodeGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.FeatureCode + " > ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andFeatureCodeGreaterThanOrEqualTo(String value) {
            addCriterion(IProductFeatureDAO.FeatureCode + " >=", value,
                "featureCode");

            return this;
        }

        public Criteria andFeatureCodeGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.FeatureCode);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andFeatureCodeGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.FeatureCode + " >= ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andFeatureCodeLessThan(String value) {
            addCriterion(IProductFeatureDAO.FeatureCode + " <", value,
                "featureCode");

            return this;
        }

        public Criteria andFeatureCodeLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.FeatureCode);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andFeatureCodeLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.FeatureCode + " < ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andFeatureCodeLessThanOrEqualTo(String value) {
            addCriterion(IProductFeatureDAO.FeatureCode + " <=", value,
                "featureCode");

            return this;
        }

        public Criteria andFeatureCodeLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.FeatureCode);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andFeatureCodeLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.FeatureCode + " <= ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andFeatureCodeLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductFeatureDAO.FeatureCode + " like",
                buffer.toString(), "featureCode");

            return this;
        }

        public Criteria andFeatureCodeNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductFeatureDAO.FeatureCode + " not like",
                buffer.toString(), "featureCode");

            return this;
        }

        public Criteria andFeatureCodeIn(List<String> values) {
            if (values.size() == 1) {
                return andFeatureCodeEqualTo(values.get(0));
            } else {
                addCriterion(IProductFeatureDAO.FeatureCode + " in", values,
                    "featureCode");

                return this;
            }
        }

        public Criteria andFeatureCodeNotIn(List<String> values) {
            if (values.size() == 1) {
                return andFeatureCodeNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductFeatureDAO.FeatureCode + " not in",
                    values, "featureCode");

                return this;
            }
        }

        public Criteria andFeatureCodeIn(String[] values) {
            if (values.length == 1) {
                return andFeatureCodeEqualTo(values[0]);
            } else {
                addCriterion(IProductFeatureDAO.FeatureCode + " in",
                    Arrays.asList(values), "featureCode");

                return this;
            }
        }

        public Criteria andFeatureCodeNotIn(String[] values) {
            if (values.length == 1) {
                return andFeatureCodeNotEqualTo(values[0]);
            } else {
                addCriterion(IProductFeatureDAO.FeatureCode + " not in",
                    Arrays.asList(values), "featureCode");

                return this;
            }
        }

        public Criteria andFeatureCodeIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.FeatureCode + " in ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andFeatureCodeNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.FeatureCode + " not in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andFeatureCodeBetween(String value1, String value2) {
            addCriterion(IProductFeatureDAO.FeatureCode + " between", value1,
                value2, "featureCode");

            return this;
        }

        public Criteria andFeatureCodeNotBetween(String value1, String value2) {
            addCriterion(IProductFeatureDAO.FeatureCode + " not between",
                value1, value2, "featureCode");

            return this;
        }

        public Criteria andFeatureNameIsNull() {
            addCriterion(IProductFeatureDAO.FeatureName + " is null");

            return this;
        }

        public Criteria andFeatureNameIsNotNull() {
            addCriterion(IProductFeatureDAO.FeatureName + " is not null");

            return this;
        }

        public Criteria andFeatureNameIsNotEmpty() {
            addCriterion(IProductFeatureDAO.FeatureName + " is not null AND " +
                IProductFeatureDAO.FeatureName + " <> ''");

            return this;
        }

        public Criteria andFeatureNameIsEmpty() {
            addCriterion("(" + IProductFeatureDAO.FeatureName + " is null OR " +
                IProductFeatureDAO.FeatureName + " = '')");

            return this;
        }

        public Criteria andFeatureNameEqualTo(String value) {
            addCriterion(IProductFeatureDAO.FeatureName + " = ", value,
                "featureName");

            return this;
        }

        public Criteria andFeatureNameEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.FeatureName);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andFeatureNameEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.FeatureName + " = ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andFeatureNameNotEqualTo(String value) {
            addCriterion(IProductFeatureDAO.FeatureName + " <>", value,
                "featureName");

            return this;
        }

        public Criteria andFeatureNameNotEqualToOrIsNull(String value) {
            addCriterion(IProductFeatureDAO.FeatureName + " is null OR " +
                IProductFeatureDAO.FeatureName + " <>", value, "featureName");

            return this;
        }

        public Criteria andFeatureNameNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.FeatureName);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andFeatureNameNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.FeatureName + " <> ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andFeatureNameGreaterThan(String value) {
            addCriterion(IProductFeatureDAO.FeatureName + " >", value,
                "featureName");

            return this;
        }

        public Criteria andFeatureNameGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.FeatureName);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andFeatureNameGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.FeatureName + " > ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andFeatureNameGreaterThanOrEqualTo(String value) {
            addCriterion(IProductFeatureDAO.FeatureName + " >=", value,
                "featureName");

            return this;
        }

        public Criteria andFeatureNameGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.FeatureName);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andFeatureNameGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.FeatureName + " >= ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andFeatureNameLessThan(String value) {
            addCriterion(IProductFeatureDAO.FeatureName + " <", value,
                "featureName");

            return this;
        }

        public Criteria andFeatureNameLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.FeatureName);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andFeatureNameLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.FeatureName + " < ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andFeatureNameLessThanOrEqualTo(String value) {
            addCriterion(IProductFeatureDAO.FeatureName + " <=", value,
                "featureName");

            return this;
        }

        public Criteria andFeatureNameLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.FeatureName);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andFeatureNameLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.FeatureName + " <= ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andFeatureNameLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductFeatureDAO.FeatureName + " like",
                buffer.toString(), "featureName");

            return this;
        }

        public Criteria andFeatureNameNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductFeatureDAO.FeatureName + " not like",
                buffer.toString(), "featureName");

            return this;
        }

        public Criteria andFeatureNameIn(List<String> values) {
            if (values.size() == 1) {
                return andFeatureNameEqualTo(values.get(0));
            } else {
                addCriterion(IProductFeatureDAO.FeatureName + " in", values,
                    "featureName");

                return this;
            }
        }

        public Criteria andFeatureNameNotIn(List<String> values) {
            if (values.size() == 1) {
                return andFeatureNameNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductFeatureDAO.FeatureName + " not in",
                    values, "featureName");

                return this;
            }
        }

        public Criteria andFeatureNameIn(String[] values) {
            if (values.length == 1) {
                return andFeatureNameEqualTo(values[0]);
            } else {
                addCriterion(IProductFeatureDAO.FeatureName + " in",
                    Arrays.asList(values), "featureName");

                return this;
            }
        }

        public Criteria andFeatureNameNotIn(String[] values) {
            if (values.length == 1) {
                return andFeatureNameNotEqualTo(values[0]);
            } else {
                addCriterion(IProductFeatureDAO.FeatureName + " not in",
                    Arrays.asList(values), "featureName");

                return this;
            }
        }

        public Criteria andFeatureNameIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.FeatureName + " in ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andFeatureNameNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.FeatureName + " not in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andFeatureNameBetween(String value1, String value2) {
            addCriterion(IProductFeatureDAO.FeatureName + " between", value1,
                value2, "featureName");

            return this;
        }

        public Criteria andFeatureNameNotBetween(String value1, String value2) {
            addCriterion(IProductFeatureDAO.FeatureName + " not between",
                value1, value2, "featureName");

            return this;
        }

        public Criteria andParentIdIsNull() {
            addCriterion(IProductFeatureDAO.ParentId + " is null");

            return this;
        }

        public Criteria andParentIdIsNotNull() {
            addCriterion(IProductFeatureDAO.ParentId + " is not null");

            return this;
        }

        public Criteria andParentIdIsNotEmpty() {
            addCriterion(IProductFeatureDAO.ParentId + " is not null AND " +
                IProductFeatureDAO.ParentId + " <> ''");

            return this;
        }

        public Criteria andParentIdIsEmpty() {
            addCriterion("(" + IProductFeatureDAO.ParentId + " is null OR " +
                IProductFeatureDAO.ParentId + " = '')");

            return this;
        }

        public Criteria andParentIdEqualTo(long value) {
            return andParentIdEqualTo(Long.valueOf(value));
        }

        public Criteria andParentIdEqualTo(java.lang.Long value) {
            addCriterion(IProductFeatureDAO.ParentId + " = ", value, "parentId");

            return this;
        }

        public Criteria andParentIdEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.ParentId);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andParentIdEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.ParentId + " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andParentIdNotEqualTo(long value) {
            return andParentIdNotEqualTo(Long.valueOf(value));
        }

        public Criteria andParentIdNotEqualTo(java.lang.Long value) {
            addCriterion(IProductFeatureDAO.ParentId + " <>", value, "parentId");

            return this;
        }

        public Criteria andParentIdNotEqualToOrIsNull(long value) {
            return andParentIdNotEqualToOrIsNull(Long.valueOf(value));
        }

        public Criteria andParentIdNotEqualToOrIsNull(java.lang.Long value) {
            addCriterion(IProductFeatureDAO.ParentId + " is null OR " +
                IProductFeatureDAO.ParentId + " <>", value, "parentId");

            return this;
        }

        public Criteria andParentIdNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.ParentId);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andParentIdNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.ParentId + " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andParentIdGreaterThan(long value) {
            return andParentIdGreaterThan(Long.valueOf(value));
        }

        public Criteria andParentIdGreaterThan(java.lang.Long value) {
            addCriterion(IProductFeatureDAO.ParentId + " >", value, "parentId");

            return this;
        }

        public Criteria andParentIdGreaterThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.ParentId);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andParentIdGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.ParentId + " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andParentIdGreaterThanOrEqualTo(long value) {
            return andParentIdGreaterThanOrEqualTo(Long.valueOf(value));
        }

        public Criteria andParentIdGreaterThanOrEqualTo(java.lang.Long value) {
            addCriterion(IProductFeatureDAO.ParentId + " >=", value, "parentId");

            return this;
        }

        public Criteria andParentIdGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.ParentId);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andParentIdGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.ParentId + " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andParentIdLessThan(long value) {
            return andParentIdLessThan(Long.valueOf(value));
        }

        public Criteria andParentIdLessThan(java.lang.Long value) {
            addCriterion(IProductFeatureDAO.ParentId + " <", value, "parentId");

            return this;
        }

        public Criteria andParentIdLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.ParentId);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andParentIdLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.ParentId + " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andParentIdLessThanOrEqualTo(long value) {
            return andParentIdLessThanOrEqualTo(Long.valueOf(value));
        }

        public Criteria andParentIdLessThanOrEqualTo(java.lang.Long value) {
            addCriterion(IProductFeatureDAO.ParentId + " <=", value, "parentId");

            return this;
        }

        public Criteria andParentIdLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.ParentId);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andParentIdLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.ParentId + " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andParentIdIn(long[] values) {
            if (values.length == 1) {
                return andParentIdEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductFeatureDAO.ParentId + " in", values,
                    "parentId");

                return this;
            }
        }

        public Criteria andParentIdNotIn(long[] values) {
            if (values.length == 1) {
                return andParentIdNotEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductFeatureDAO.ParentId + " not in", values,
                    "parentId");

                return this;
            }
        }

        public Criteria andParentIdIn(List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andParentIdEqualTo(values.get(0));
            } else {
                addCriterion(IProductFeatureDAO.ParentId + " in", values,
                    "parentId");

                return this;
            }
        }

        public Criteria andParentIdNotIn(List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andParentIdNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductFeatureDAO.ParentId + " not in", values,
                    "parentId");

                return this;
            }
        }

        public Criteria andParentIdIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andParentIdEqualTo(values[0]);
            } else {
                addCriterion(IProductFeatureDAO.ParentId + " in",
                    Arrays.asList(values), "parentId");

                return this;
            }
        }

        public Criteria andParentIdNotIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andParentIdNotEqualTo(values[0]);
            } else {
                addCriterion(IProductFeatureDAO.ParentId + " not in",
                    Arrays.asList(values), "parentId");

                return this;
            }
        }

        public Criteria andParentIdIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.ParentId + " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andParentIdNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.ParentId + " not in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andParentIdBetween(long value1, long value2) {
            addCriterion(IProductFeatureDAO.ParentId + " between", value1,
                value2, "parentId");

            return this;
        }

        public Criteria andParentIdBetween(java.lang.Long value1,
            java.lang.Long value2) {
            addCriterion(IProductFeatureDAO.ParentId + " between", value1,
                value2, "parentId");

            return this;
        }

        public Criteria andParentIdNotBetween(long value1, long value2) {
            addCriterion(IProductFeatureDAO.ParentId + " not between", value1,
                value2, "parentId");

            return this;
        }

        public Criteria andParentIdNotBetween(java.lang.Long value1,
            java.lang.Long value2) {
            addCriterion(IProductFeatureDAO.ParentId + " not between", value1,
                value2, "parentId");

            return this;
        }

        public Criteria andProductDefineIdIsNull() {
            addCriterion(IProductFeatureDAO.ProductDefineId + " is null");

            return this;
        }

        public Criteria andProductDefineIdIsNotNull() {
            addCriterion(IProductFeatureDAO.ProductDefineId + " is not null");

            return this;
        }

        public Criteria andProductDefineIdIsNotEmpty() {
            addCriterion(IProductFeatureDAO.ProductDefineId +
                " is not null AND " + IProductFeatureDAO.ProductDefineId +
                " <> ''");

            return this;
        }

        public Criteria andProductDefineIdIsEmpty() {
            addCriterion("(" + IProductFeatureDAO.ProductDefineId +
                " is null OR " + IProductFeatureDAO.ProductDefineId + " = '')");

            return this;
        }

        public Criteria andProductDefineIdEqualTo(long value) {
            return andProductDefineIdEqualTo(Long.valueOf(value));
        }

        public Criteria andProductDefineIdEqualTo(java.lang.Long value) {
            addCriterion(IProductFeatureDAO.ProductDefineId + " = ", value,
                "productDefineId");

            return this;
        }

        public Criteria andProductDefineIdEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.ProductDefineId);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andProductDefineIdEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.ProductDefineId + " = ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andProductDefineIdNotEqualTo(long value) {
            return andProductDefineIdNotEqualTo(Long.valueOf(value));
        }

        public Criteria andProductDefineIdNotEqualTo(java.lang.Long value) {
            addCriterion(IProductFeatureDAO.ProductDefineId + " <>", value,
                "productDefineId");

            return this;
        }

        public Criteria andProductDefineIdNotEqualToOrIsNull(long value) {
            return andProductDefineIdNotEqualToOrIsNull(Long.valueOf(value));
        }

        public Criteria andProductDefineIdNotEqualToOrIsNull(
            java.lang.Long value) {
            addCriterion(IProductFeatureDAO.ProductDefineId + " is null OR " +
                IProductFeatureDAO.ProductDefineId + " <>", value,
                "productDefineId");

            return this;
        }

        public Criteria andProductDefineIdNotEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.ProductDefineId);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andProductDefineIdNotEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.ProductDefineId + " <> ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andProductDefineIdGreaterThan(long value) {
            return andProductDefineIdGreaterThan(Long.valueOf(value));
        }

        public Criteria andProductDefineIdGreaterThan(java.lang.Long value) {
            addCriterion(IProductFeatureDAO.ProductDefineId + " >", value,
                "productDefineId");

            return this;
        }

        public Criteria andProductDefineIdGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.ProductDefineId);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andProductDefineIdGreaterThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.ProductDefineId + " > ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andProductDefineIdGreaterThanOrEqualTo(long value) {
            return andProductDefineIdGreaterThanOrEqualTo(Long.valueOf(value));
        }

        public Criteria andProductDefineIdGreaterThanOrEqualTo(
            java.lang.Long value) {
            addCriterion(IProductFeatureDAO.ProductDefineId + " >=", value,
                "productDefineId");

            return this;
        }

        public Criteria andProductDefineIdGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.ProductDefineId);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andProductDefineIdGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.ProductDefineId + " >= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andProductDefineIdLessThan(long value) {
            return andProductDefineIdLessThan(Long.valueOf(value));
        }

        public Criteria andProductDefineIdLessThan(java.lang.Long value) {
            addCriterion(IProductFeatureDAO.ProductDefineId + " <", value,
                "productDefineId");

            return this;
        }

        public Criteria andProductDefineIdLessThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.ProductDefineId);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andProductDefineIdLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.ProductDefineId + " < ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andProductDefineIdLessThanOrEqualTo(long value) {
            return andProductDefineIdLessThanOrEqualTo(Long.valueOf(value));
        }

        public Criteria andProductDefineIdLessThanOrEqualTo(
            java.lang.Long value) {
            addCriterion(IProductFeatureDAO.ProductDefineId + " <=", value,
                "productDefineId");

            return this;
        }

        public Criteria andProductDefineIdLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.ProductDefineId);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andProductDefineIdLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.ProductDefineId + " <= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andProductDefineIdIn(long[] values) {
            if (values.length == 1) {
                return andProductDefineIdEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductFeatureDAO.ProductDefineId + " in",
                    values, "productDefineId");

                return this;
            }
        }

        public Criteria andProductDefineIdNotIn(long[] values) {
            if (values.length == 1) {
                return andProductDefineIdNotEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductFeatureDAO.ProductDefineId + " not in",
                    values, "productDefineId");

                return this;
            }
        }

        public Criteria andProductDefineIdIn(List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andProductDefineIdEqualTo(values.get(0));
            } else {
                addCriterion(IProductFeatureDAO.ProductDefineId + " in",
                    values, "productDefineId");

                return this;
            }
        }

        public Criteria andProductDefineIdNotIn(List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andProductDefineIdNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductFeatureDAO.ProductDefineId + " not in",
                    values, "productDefineId");

                return this;
            }
        }

        public Criteria andProductDefineIdIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andProductDefineIdEqualTo(values[0]);
            } else {
                addCriterion(IProductFeatureDAO.ProductDefineId + " in",
                    Arrays.asList(values), "productDefineId");

                return this;
            }
        }

        public Criteria andProductDefineIdNotIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andProductDefineIdNotEqualTo(values[0]);
            } else {
                addCriterion(IProductFeatureDAO.ProductDefineId + " not in",
                    Arrays.asList(values), "productDefineId");

                return this;
            }
        }

        public Criteria andProductDefineIdIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.ProductDefineId + " in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andProductDefineIdNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.ProductDefineId + " not in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andProductDefineIdBetween(long value1, long value2) {
            addCriterion(IProductFeatureDAO.ProductDefineId + " between",
                value1, value2, "productDefineId");

            return this;
        }

        public Criteria andProductDefineIdBetween(java.lang.Long value1,
            java.lang.Long value2) {
            addCriterion(IProductFeatureDAO.ProductDefineId + " between",
                value1, value2, "productDefineId");

            return this;
        }

        public Criteria andProductDefineIdNotBetween(long value1, long value2) {
            addCriterion(IProductFeatureDAO.ProductDefineId + " not between",
                value1, value2, "productDefineId");

            return this;
        }

        public Criteria andProductDefineIdNotBetween(java.lang.Long value1,
            java.lang.Long value2) {
            addCriterion(IProductFeatureDAO.ProductDefineId + " not between",
                value1, value2, "productDefineId");

            return this;
        }

        public Criteria andRemarksIsNull() {
            addCriterion(IProductFeatureDAO.Remarks + " is null");

            return this;
        }

        public Criteria andRemarksIsNotNull() {
            addCriterion(IProductFeatureDAO.Remarks + " is not null");

            return this;
        }

        public Criteria andRemarksIsNotEmpty() {
            addCriterion(IProductFeatureDAO.Remarks + " is not null AND " +
                IProductFeatureDAO.Remarks + " <> ''");

            return this;
        }

        public Criteria andRemarksIsEmpty() {
            addCriterion("(" + IProductFeatureDAO.Remarks + " is null OR " +
                IProductFeatureDAO.Remarks + " = '')");

            return this;
        }

        public Criteria andRemarksEqualTo(String value) {
            addCriterion(IProductFeatureDAO.Remarks + " = ", value, "remarks");

            return this;
        }

        public Criteria andRemarksEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Remarks);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRemarksEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Remarks + " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksNotEqualTo(String value) {
            addCriterion(IProductFeatureDAO.Remarks + " <>", value, "remarks");

            return this;
        }

        public Criteria andRemarksNotEqualToOrIsNull(String value) {
            addCriterion(IProductFeatureDAO.Remarks + " is null OR " +
                IProductFeatureDAO.Remarks + " <>", value, "remarks");

            return this;
        }

        public Criteria andRemarksNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Remarks);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRemarksNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Remarks + " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksGreaterThan(String value) {
            addCriterion(IProductFeatureDAO.Remarks + " >", value, "remarks");

            return this;
        }

        public Criteria andRemarksGreaterThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Remarks);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRemarksGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Remarks + " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksGreaterThanOrEqualTo(String value) {
            addCriterion(IProductFeatureDAO.Remarks + " >=", value, "remarks");

            return this;
        }

        public Criteria andRemarksGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Remarks);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRemarksGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Remarks + " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksLessThan(String value) {
            addCriterion(IProductFeatureDAO.Remarks + " <", value, "remarks");

            return this;
        }

        public Criteria andRemarksLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Remarks);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRemarksLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Remarks + " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksLessThanOrEqualTo(String value) {
            addCriterion(IProductFeatureDAO.Remarks + " <=", value, "remarks");

            return this;
        }

        public Criteria andRemarksLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Remarks);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRemarksLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Remarks + " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductFeatureDAO.Remarks + " like",
                buffer.toString(), "remarks");

            return this;
        }

        public Criteria andRemarksNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductFeatureDAO.Remarks + " not like",
                buffer.toString(), "remarks");

            return this;
        }

        public Criteria andRemarksIn(List<String> values) {
            if (values.size() == 1) {
                return andRemarksEqualTo(values.get(0));
            } else {
                addCriterion(IProductFeatureDAO.Remarks + " in", values,
                    "remarks");

                return this;
            }
        }

        public Criteria andRemarksNotIn(List<String> values) {
            if (values.size() == 1) {
                return andRemarksNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductFeatureDAO.Remarks + " not in", values,
                    "remarks");

                return this;
            }
        }

        public Criteria andRemarksIn(String[] values) {
            if (values.length == 1) {
                return andRemarksEqualTo(values[0]);
            } else {
                addCriterion(IProductFeatureDAO.Remarks + " in",
                    Arrays.asList(values), "remarks");

                return this;
            }
        }

        public Criteria andRemarksNotIn(String[] values) {
            if (values.length == 1) {
                return andRemarksNotEqualTo(values[0]);
            } else {
                addCriterion(IProductFeatureDAO.Remarks + " not in",
                    Arrays.asList(values), "remarks");

                return this;
            }
        }

        public Criteria andRemarksIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Remarks + " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Remarks + " not in ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andRemarksBetween(String value1, String value2) {
            addCriterion(IProductFeatureDAO.Remarks + " between", value1,
                value2, "remarks");

            return this;
        }

        public Criteria andRemarksNotBetween(String value1, String value2) {
            addCriterion(IProductFeatureDAO.Remarks + " not between", value1,
                value2, "remarks");

            return this;
        }

        public Criteria andStatusIsNull() {
            addCriterion(IProductFeatureDAO.Status + " is null");

            return this;
        }

        public Criteria andStatusIsNotNull() {
            addCriterion(IProductFeatureDAO.Status + " is not null");

            return this;
        }

        public Criteria andStatusIsNotEmpty() {
            addCriterion(IProductFeatureDAO.Status + " is not null AND " +
                IProductFeatureDAO.Status + " <> ''");

            return this;
        }

        public Criteria andStatusIsEmpty() {
            addCriterion("(" + IProductFeatureDAO.Status + " is null OR " +
                IProductFeatureDAO.Status + " = '')");

            return this;
        }

        public Criteria andStatusEqualTo(String value) {
            addCriterion(IProductFeatureDAO.Status + " = ", value, "status");

            return this;
        }

        public Criteria andStatusEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Status);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andStatusEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Status + " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andStatusNotEqualTo(String value) {
            addCriterion(IProductFeatureDAO.Status + " <>", value, "status");

            return this;
        }

        public Criteria andStatusNotEqualToOrIsNull(String value) {
            addCriterion(IProductFeatureDAO.Status + " is null OR " +
                IProductFeatureDAO.Status + " <>", value, "status");

            return this;
        }

        public Criteria andStatusNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Status);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andStatusNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Status + " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andStatusGreaterThan(String value) {
            addCriterion(IProductFeatureDAO.Status + " >", value, "status");

            return this;
        }

        public Criteria andStatusGreaterThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Status);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andStatusGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Status + " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andStatusGreaterThanOrEqualTo(String value) {
            addCriterion(IProductFeatureDAO.Status + " >=", value, "status");

            return this;
        }

        public Criteria andStatusGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Status);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andStatusGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Status + " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andStatusLessThan(String value) {
            addCriterion(IProductFeatureDAO.Status + " <", value, "status");

            return this;
        }

        public Criteria andStatusLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Status);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andStatusLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Status + " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andStatusLessThanOrEqualTo(String value) {
            addCriterion(IProductFeatureDAO.Status + " <=", value, "status");

            return this;
        }

        public Criteria andStatusLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Status);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andStatusLessThanOrEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Status + " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andStatusLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductFeatureDAO.Status + " like",
                buffer.toString(), "status");

            return this;
        }

        public Criteria andStatusNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductFeatureDAO.Status + " not like",
                buffer.toString(), "status");

            return this;
        }

        public Criteria andStatusIn(List<String> values) {
            if (values.size() == 1) {
                return andStatusEqualTo(values.get(0));
            } else {
                addCriterion(IProductFeatureDAO.Status + " in", values, "status");

                return this;
            }
        }

        public Criteria andStatusNotIn(List<String> values) {
            if (values.size() == 1) {
                return andStatusNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductFeatureDAO.Status + " not in", values,
                    "status");

                return this;
            }
        }

        public Criteria andStatusIn(String[] values) {
            if (values.length == 1) {
                return andStatusEqualTo(values[0]);
            } else {
                addCriterion(IProductFeatureDAO.Status + " in",
                    Arrays.asList(values), "status");

                return this;
            }
        }

        public Criteria andStatusNotIn(String[] values) {
            if (values.length == 1) {
                return andStatusNotEqualTo(values[0]);
            } else {
                addCriterion(IProductFeatureDAO.Status + " not in",
                    Arrays.asList(values), "status");

                return this;
            }
        }

        public Criteria andStatusIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Status + " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andStatusNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Status + " not in ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andStatusBetween(String value1, String value2) {
            addCriterion(IProductFeatureDAO.Status + " between", value1,
                value2, "status");

            return this;
        }

        public Criteria andStatusNotBetween(String value1, String value2) {
            addCriterion(IProductFeatureDAO.Status + " not between", value1,
                value2, "status");

            return this;
        }

        public Criteria andCanTestIsNull() {
            addCriterion(IProductFeatureDAO.CanTest + " is null");

            return this;
        }

        public Criteria andCanTestIsNotNull() {
            addCriterion(IProductFeatureDAO.CanTest + " is not null");

            return this;
        }

        public Criteria andCanTestIsNotEmpty() {
            addCriterion(IProductFeatureDAO.CanTest + " is not null AND " +
                IProductFeatureDAO.CanTest + " <> ''");

            return this;
        }

        public Criteria andCanTestIsEmpty() {
            addCriterion("(" + IProductFeatureDAO.CanTest + " is null OR " +
                IProductFeatureDAO.CanTest + " = '')");

            return this;
        }

        public Criteria andCanTestEqualTo(String value) {
            addCriterion(IProductFeatureDAO.CanTest + " = ", value, "canTest");

            return this;
        }

        public Criteria andCanTestEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.CanTest);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andCanTestEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.CanTest + " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andCanTestNotEqualTo(String value) {
            addCriterion(IProductFeatureDAO.CanTest + " <>", value, "canTest");

            return this;
        }

        public Criteria andCanTestNotEqualToOrIsNull(String value) {
            addCriterion(IProductFeatureDAO.CanTest + " is null OR " +
                IProductFeatureDAO.CanTest + " <>", value, "canTest");

            return this;
        }

        public Criteria andCanTestNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.CanTest);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andCanTestNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.CanTest + " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andCanTestGreaterThan(String value) {
            addCriterion(IProductFeatureDAO.CanTest + " >", value, "canTest");

            return this;
        }

        public Criteria andCanTestGreaterThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.CanTest);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andCanTestGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.CanTest + " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andCanTestGreaterThanOrEqualTo(String value) {
            addCriterion(IProductFeatureDAO.CanTest + " >=", value, "canTest");

            return this;
        }

        public Criteria andCanTestGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.CanTest);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andCanTestGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.CanTest + " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andCanTestLessThan(String value) {
            addCriterion(IProductFeatureDAO.CanTest + " <", value, "canTest");

            return this;
        }

        public Criteria andCanTestLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.CanTest);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andCanTestLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.CanTest + " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andCanTestLessThanOrEqualTo(String value) {
            addCriterion(IProductFeatureDAO.CanTest + " <=", value, "canTest");

            return this;
        }

        public Criteria andCanTestLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.CanTest);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andCanTestLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.CanTest + " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andCanTestLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductFeatureDAO.CanTest + " like",
                buffer.toString(), "canTest");

            return this;
        }

        public Criteria andCanTestNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductFeatureDAO.CanTest + " not like",
                buffer.toString(), "canTest");

            return this;
        }

        public Criteria andCanTestIn(List<String> values) {
            if (values.size() == 1) {
                return andCanTestEqualTo(values.get(0));
            } else {
                addCriterion(IProductFeatureDAO.CanTest + " in", values,
                    "canTest");

                return this;
            }
        }

        public Criteria andCanTestNotIn(List<String> values) {
            if (values.size() == 1) {
                return andCanTestNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductFeatureDAO.CanTest + " not in", values,
                    "canTest");

                return this;
            }
        }

        public Criteria andCanTestIn(String[] values) {
            if (values.length == 1) {
                return andCanTestEqualTo(values[0]);
            } else {
                addCriterion(IProductFeatureDAO.CanTest + " in",
                    Arrays.asList(values), "canTest");

                return this;
            }
        }

        public Criteria andCanTestNotIn(String[] values) {
            if (values.length == 1) {
                return andCanTestNotEqualTo(values[0]);
            } else {
                addCriterion(IProductFeatureDAO.CanTest + " not in",
                    Arrays.asList(values), "canTest");

                return this;
            }
        }

        public Criteria andCanTestIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.CanTest + " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andCanTestNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.CanTest + " not in ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andCanTestBetween(String value1, String value2) {
            addCriterion(IProductFeatureDAO.CanTest + " between", value1,
                value2, "canTest");

            return this;
        }

        public Criteria andCanTestNotBetween(String value1, String value2) {
            addCriterion(IProductFeatureDAO.CanTest + " not between", value1,
                value2, "canTest");

            return this;
        }

        public Criteria andKeyFeatureIsNull() {
            addCriterion(IProductFeatureDAO.KeyFeature + " is null");

            return this;
        }

        public Criteria andKeyFeatureIsNotNull() {
            addCriterion(IProductFeatureDAO.KeyFeature + " is not null");

            return this;
        }

        public Criteria andKeyFeatureIsNotEmpty() {
            addCriterion(IProductFeatureDAO.KeyFeature + " is not null AND " +
                IProductFeatureDAO.KeyFeature + " <> ''");

            return this;
        }

        public Criteria andKeyFeatureIsEmpty() {
            addCriterion("(" + IProductFeatureDAO.KeyFeature + " is null OR " +
                IProductFeatureDAO.KeyFeature + " = '')");

            return this;
        }

        public Criteria andKeyFeatureEqualTo(String value) {
            addCriterion(IProductFeatureDAO.KeyFeature + " = ", value,
                "keyFeature");

            return this;
        }

        public Criteria andKeyFeatureEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.KeyFeature);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andKeyFeatureEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.KeyFeature + " = ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andKeyFeatureNotEqualTo(String value) {
            addCriterion(IProductFeatureDAO.KeyFeature + " <>", value,
                "keyFeature");

            return this;
        }

        public Criteria andKeyFeatureNotEqualToOrIsNull(String value) {
            addCriterion(IProductFeatureDAO.KeyFeature + " is null OR " +
                IProductFeatureDAO.KeyFeature + " <>", value, "keyFeature");

            return this;
        }

        public Criteria andKeyFeatureNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.KeyFeature);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andKeyFeatureNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.KeyFeature + " <> ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andKeyFeatureGreaterThan(String value) {
            addCriterion(IProductFeatureDAO.KeyFeature + " >", value,
                "keyFeature");

            return this;
        }

        public Criteria andKeyFeatureGreaterThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.KeyFeature);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andKeyFeatureGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.KeyFeature + " > ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andKeyFeatureGreaterThanOrEqualTo(String value) {
            addCriterion(IProductFeatureDAO.KeyFeature + " >=", value,
                "keyFeature");

            return this;
        }

        public Criteria andKeyFeatureGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.KeyFeature);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andKeyFeatureGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.KeyFeature + " >= ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andKeyFeatureLessThan(String value) {
            addCriterion(IProductFeatureDAO.KeyFeature + " <", value,
                "keyFeature");

            return this;
        }

        public Criteria andKeyFeatureLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.KeyFeature);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andKeyFeatureLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.KeyFeature + " < ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andKeyFeatureLessThanOrEqualTo(String value) {
            addCriterion(IProductFeatureDAO.KeyFeature + " <=", value,
                "keyFeature");

            return this;
        }

        public Criteria andKeyFeatureLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.KeyFeature);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andKeyFeatureLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.KeyFeature + " <= ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andKeyFeatureLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductFeatureDAO.KeyFeature + " like",
                buffer.toString(), "keyFeature");

            return this;
        }

        public Criteria andKeyFeatureNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductFeatureDAO.KeyFeature + " not like",
                buffer.toString(), "keyFeature");

            return this;
        }

        public Criteria andKeyFeatureIn(List<String> values) {
            if (values.size() == 1) {
                return andKeyFeatureEqualTo(values.get(0));
            } else {
                addCriterion(IProductFeatureDAO.KeyFeature + " in", values,
                    "keyFeature");

                return this;
            }
        }

        public Criteria andKeyFeatureNotIn(List<String> values) {
            if (values.size() == 1) {
                return andKeyFeatureNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductFeatureDAO.KeyFeature + " not in", values,
                    "keyFeature");

                return this;
            }
        }

        public Criteria andKeyFeatureIn(String[] values) {
            if (values.length == 1) {
                return andKeyFeatureEqualTo(values[0]);
            } else {
                addCriterion(IProductFeatureDAO.KeyFeature + " in",
                    Arrays.asList(values), "keyFeature");

                return this;
            }
        }

        public Criteria andKeyFeatureNotIn(String[] values) {
            if (values.length == 1) {
                return andKeyFeatureNotEqualTo(values[0]);
            } else {
                addCriterion(IProductFeatureDAO.KeyFeature + " not in",
                    Arrays.asList(values), "keyFeature");

                return this;
            }
        }

        public Criteria andKeyFeatureIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.KeyFeature + " in ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andKeyFeatureNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.KeyFeature + " not in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andKeyFeatureBetween(String value1, String value2) {
            addCriterion(IProductFeatureDAO.KeyFeature + " between", value1,
                value2, "keyFeature");

            return this;
        }

        public Criteria andKeyFeatureNotBetween(String value1, String value2) {
            addCriterion(IProductFeatureDAO.KeyFeature + " not between",
                value1, value2, "keyFeature");

            return this;
        }

        public Criteria andSortIndexIsNull() {
            addCriterion(IProductFeatureDAO.SortIndex + " is null");

            return this;
        }

        public Criteria andSortIndexIsNotNull() {
            addCriterion(IProductFeatureDAO.SortIndex + " is not null");

            return this;
        }

        public Criteria andSortIndexIsNotEmpty() {
            addCriterion(IProductFeatureDAO.SortIndex + " is not null AND " +
                IProductFeatureDAO.SortIndex + " <> ''");

            return this;
        }

        public Criteria andSortIndexIsEmpty() {
            addCriterion("(" + IProductFeatureDAO.SortIndex + " is null OR " +
                IProductFeatureDAO.SortIndex + " = '')");

            return this;
        }

        public Criteria andSortIndexEqualTo(int value) {
            return andSortIndexEqualTo(Integer.valueOf(value));
        }

        public Criteria andSortIndexEqualTo(java.lang.Integer value) {
            addCriterion(IProductFeatureDAO.SortIndex + " = ", value,
                "sortIndex");

            return this;
        }

        public Criteria andSortIndexEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.SortIndex);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andSortIndexEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.SortIndex + " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andSortIndexNotEqualTo(int value) {
            return andSortIndexNotEqualTo(Integer.valueOf(value));
        }

        public Criteria andSortIndexNotEqualTo(java.lang.Integer value) {
            addCriterion(IProductFeatureDAO.SortIndex + " <>", value,
                "sortIndex");

            return this;
        }

        public Criteria andSortIndexNotEqualToOrIsNull(int value) {
            return andSortIndexNotEqualToOrIsNull(Integer.valueOf(value));
        }

        public Criteria andSortIndexNotEqualToOrIsNull(java.lang.Integer value) {
            addCriterion(IProductFeatureDAO.SortIndex + " is null OR " +
                IProductFeatureDAO.SortIndex + " <>", value, "sortIndex");

            return this;
        }

        public Criteria andSortIndexNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.SortIndex);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andSortIndexNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.SortIndex + " <> ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andSortIndexGreaterThan(int value) {
            return andSortIndexGreaterThan(Integer.valueOf(value));
        }

        public Criteria andSortIndexGreaterThan(java.lang.Integer value) {
            addCriterion(IProductFeatureDAO.SortIndex + " >", value, "sortIndex");

            return this;
        }

        public Criteria andSortIndexGreaterThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.SortIndex);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andSortIndexGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.SortIndex + " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andSortIndexGreaterThanOrEqualTo(int value) {
            return andSortIndexGreaterThanOrEqualTo(Integer.valueOf(value));
        }

        public Criteria andSortIndexGreaterThanOrEqualTo(
            java.lang.Integer value) {
            addCriterion(IProductFeatureDAO.SortIndex + " >=", value,
                "sortIndex");

            return this;
        }

        public Criteria andSortIndexGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.SortIndex);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andSortIndexGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.SortIndex + " >= ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andSortIndexLessThan(int value) {
            return andSortIndexLessThan(Integer.valueOf(value));
        }

        public Criteria andSortIndexLessThan(java.lang.Integer value) {
            addCriterion(IProductFeatureDAO.SortIndex + " <", value, "sortIndex");

            return this;
        }

        public Criteria andSortIndexLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.SortIndex);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andSortIndexLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.SortIndex + " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andSortIndexLessThanOrEqualTo(int value) {
            return andSortIndexLessThanOrEqualTo(Integer.valueOf(value));
        }

        public Criteria andSortIndexLessThanOrEqualTo(java.lang.Integer value) {
            addCriterion(IProductFeatureDAO.SortIndex + " <=", value,
                "sortIndex");

            return this;
        }

        public Criteria andSortIndexLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.SortIndex);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andSortIndexLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.SortIndex + " <= ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andSortIndexIn(int[] values) {
            if (values.length == 1) {
                return andSortIndexEqualTo((java.lang.Integer) values[0]);
            } else {
                addCriterion(IProductFeatureDAO.SortIndex + " in", values,
                    "sortIndex");

                return this;
            }
        }

        public Criteria andSortIndexNotIn(int[] values) {
            if (values.length == 1) {
                return andSortIndexNotEqualTo((java.lang.Integer) values[0]);
            } else {
                addCriterion(IProductFeatureDAO.SortIndex + " not in", values,
                    "sortIndex");

                return this;
            }
        }

        public Criteria andSortIndexIn(List<java.lang.Integer> values) {
            if (values.size() == 1) {
                return andSortIndexEqualTo(values.get(0));
            } else {
                addCriterion(IProductFeatureDAO.SortIndex + " in", values,
                    "sortIndex");

                return this;
            }
        }

        public Criteria andSortIndexNotIn(List<java.lang.Integer> values) {
            if (values.size() == 1) {
                return andSortIndexNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductFeatureDAO.SortIndex + " not in", values,
                    "sortIndex");

                return this;
            }
        }

        public Criteria andSortIndexIn(java.lang.Integer[] values) {
            if (values.length == 1) {
                return andSortIndexEqualTo(values[0]);
            } else {
                addCriterion(IProductFeatureDAO.SortIndex + " in",
                    Arrays.asList(values), "sortIndex");

                return this;
            }
        }

        public Criteria andSortIndexNotIn(java.lang.Integer[] values) {
            if (values.length == 1) {
                return andSortIndexNotEqualTo(values[0]);
            } else {
                addCriterion(IProductFeatureDAO.SortIndex + " not in",
                    Arrays.asList(values), "sortIndex");

                return this;
            }
        }

        public Criteria andSortIndexIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.SortIndex + " in ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andSortIndexNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.SortIndex + " not in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andSortIndexBetween(int value1, int value2) {
            addCriterion(IProductFeatureDAO.SortIndex + " between", value1,
                value2, "sortIndex");

            return this;
        }

        public Criteria andSortIndexBetween(java.lang.Integer value1,
            java.lang.Integer value2) {
            addCriterion(IProductFeatureDAO.SortIndex + " between", value1,
                value2, "sortIndex");

            return this;
        }

        public Criteria andSortIndexNotBetween(int value1, int value2) {
            addCriterion(IProductFeatureDAO.SortIndex + " not between", value1,
                value2, "sortIndex");

            return this;
        }

        public Criteria andSortIndexNotBetween(java.lang.Integer value1,
            java.lang.Integer value2) {
            addCriterion(IProductFeatureDAO.SortIndex + " not between", value1,
                value2, "sortIndex");

            return this;
        }

        public Criteria andIndentIsNull() {
            addCriterion(IProductFeatureDAO.Indent + " is null");

            return this;
        }

        public Criteria andIndentIsNotNull() {
            addCriterion(IProductFeatureDAO.Indent + " is not null");

            return this;
        }

        public Criteria andIndentIsNotEmpty() {
            addCriterion(IProductFeatureDAO.Indent + " is not null AND " +
                IProductFeatureDAO.Indent + " <> ''");

            return this;
        }

        public Criteria andIndentIsEmpty() {
            addCriterion("(" + IProductFeatureDAO.Indent + " is null OR " +
                IProductFeatureDAO.Indent + " = '')");

            return this;
        }

        public Criteria andIndentEqualTo(int value) {
            return andIndentEqualTo(Integer.valueOf(value));
        }

        public Criteria andIndentEqualTo(java.lang.Integer value) {
            addCriterion(IProductFeatureDAO.Indent + " = ", value, "indent");

            return this;
        }

        public Criteria andIndentEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Indent);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIndentEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Indent + " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andIndentNotEqualTo(int value) {
            return andIndentNotEqualTo(Integer.valueOf(value));
        }

        public Criteria andIndentNotEqualTo(java.lang.Integer value) {
            addCriterion(IProductFeatureDAO.Indent + " <>", value, "indent");

            return this;
        }

        public Criteria andIndentNotEqualToOrIsNull(int value) {
            return andIndentNotEqualToOrIsNull(Integer.valueOf(value));
        }

        public Criteria andIndentNotEqualToOrIsNull(java.lang.Integer value) {
            addCriterion(IProductFeatureDAO.Indent + " is null OR " +
                IProductFeatureDAO.Indent + " <>", value, "indent");

            return this;
        }

        public Criteria andIndentNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Indent);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIndentNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Indent + " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andIndentGreaterThan(int value) {
            return andIndentGreaterThan(Integer.valueOf(value));
        }

        public Criteria andIndentGreaterThan(java.lang.Integer value) {
            addCriterion(IProductFeatureDAO.Indent + " >", value, "indent");

            return this;
        }

        public Criteria andIndentGreaterThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Indent);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIndentGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Indent + " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andIndentGreaterThanOrEqualTo(int value) {
            return andIndentGreaterThanOrEqualTo(Integer.valueOf(value));
        }

        public Criteria andIndentGreaterThanOrEqualTo(java.lang.Integer value) {
            addCriterion(IProductFeatureDAO.Indent + " >=", value, "indent");

            return this;
        }

        public Criteria andIndentGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Indent);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIndentGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Indent + " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andIndentLessThan(int value) {
            return andIndentLessThan(Integer.valueOf(value));
        }

        public Criteria andIndentLessThan(java.lang.Integer value) {
            addCriterion(IProductFeatureDAO.Indent + " <", value, "indent");

            return this;
        }

        public Criteria andIndentLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Indent);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIndentLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Indent + " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andIndentLessThanOrEqualTo(int value) {
            return andIndentLessThanOrEqualTo(Integer.valueOf(value));
        }

        public Criteria andIndentLessThanOrEqualTo(java.lang.Integer value) {
            addCriterion(IProductFeatureDAO.Indent + " <=", value, "indent");

            return this;
        }

        public Criteria andIndentLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductFeatureDAO.Indent);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIndentLessThanOrEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Indent + " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andIndentIn(int[] values) {
            if (values.length == 1) {
                return andIndentEqualTo((java.lang.Integer) values[0]);
            } else {
                addCriterion(IProductFeatureDAO.Indent + " in", values, "indent");

                return this;
            }
        }

        public Criteria andIndentNotIn(int[] values) {
            if (values.length == 1) {
                return andIndentNotEqualTo((java.lang.Integer) values[0]);
            } else {
                addCriterion(IProductFeatureDAO.Indent + " not in", values,
                    "indent");

                return this;
            }
        }

        public Criteria andIndentIn(List<java.lang.Integer> values) {
            if (values.size() == 1) {
                return andIndentEqualTo(values.get(0));
            } else {
                addCriterion(IProductFeatureDAO.Indent + " in", values, "indent");

                return this;
            }
        }

        public Criteria andIndentNotIn(List<java.lang.Integer> values) {
            if (values.size() == 1) {
                return andIndentNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductFeatureDAO.Indent + " not in", values,
                    "indent");

                return this;
            }
        }

        public Criteria andIndentIn(java.lang.Integer[] values) {
            if (values.length == 1) {
                return andIndentEqualTo(values[0]);
            } else {
                addCriterion(IProductFeatureDAO.Indent + " in",
                    Arrays.asList(values), "indent");

                return this;
            }
        }

        public Criteria andIndentNotIn(java.lang.Integer[] values) {
            if (values.length == 1) {
                return andIndentNotEqualTo(values[0]);
            } else {
                addCriterion(IProductFeatureDAO.Indent + " not in",
                    Arrays.asList(values), "indent");

                return this;
            }
        }

        public Criteria andIndentIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Indent + " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andIndentNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductFeatureDAO.Indent + " not in ", subQueryBean,
                dao);

            return this;
        }

        public Criteria andIndentBetween(int value1, int value2) {
            addCriterion(IProductFeatureDAO.Indent + " between", value1,
                value2, "indent");

            return this;
        }

        public Criteria andIndentBetween(java.lang.Integer value1,
            java.lang.Integer value2) {
            addCriterion(IProductFeatureDAO.Indent + " between", value1,
                value2, "indent");

            return this;
        }

        public Criteria andIndentNotBetween(int value1, int value2) {
            addCriterion(IProductFeatureDAO.Indent + " not between", value1,
                value2, "indent");

            return this;
        }

        public Criteria andIndentNotBetween(java.lang.Integer value1,
            java.lang.Integer value2) {
            addCriterion(IProductFeatureDAO.Indent + " not between", value1,
                value2, "indent");

            return this;
        }
    }
}
